<?php
class QueueClass
{
    /**
     * 把任务放到队列
     *
     * @param string $taskphp   执行任务的方法
     * @param string $param     执行任务程序所用的参数
     * 例如，群发消息加入队列：
     * $arr = array(
     *      "uid" => 4,//发信息的人的UID
     *      "uids" => array(6,234,34,67,7888,2355), //接收信息的人的UID
     *      "content" => 'xxxxx',//信息内容
     *  );
     * $cqueue = new Queue();
     * $cqueue->add("/app/send_msg.php", array($arr));
     *
     */
    public function add($task, $param)
    {
        global $DBobject;
        $datas = json_encode($param);
        $sql = "INSERT INTO tbl_queue (queue_task, queue_params, queue_created) VALUES (:task, :params, now())";
        $params = [':task'=>$task, ':params' => $datas];

        $res = $DBobject->executeSQL($sql, $param);
        if ($res) {
            $pid = mysql_insert_id();
            return $pid;
        } else {
            return false;
        }
    }
    
    /**
     * 读取任务队列
     *
     * @param string $limit 一次取多少条
     */
    public function get($limit = 10)
    {
        $limit = (int)$limit;
        $sql = "SELECT queue_id, queue_task, queue_param FROM tbl_queue WHERE status = 0 ORDER BY queue_id ASC LIMIT ".intval($limit);
        $res = $DBobject->executeSQL($sql);
        return $res;
    }
      
    /**
     * 更新任务状态
     *
     * @param int $id 队列ID
     */
    public function updateByID($id)
    {
        $sql = "UPDATE tbl_queue SET status = 1 WHERE queue_id = ".intval($id);
        $res = $DBobject->executeSQL($sql);
        return $res;
    }
}
